package com.wyf.springmvc.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

/**
 * URL地址映射配置
 *   通过注解@RequestMapping 设置地址
 *     设置@RequestMapping：
 *     1. 设置在方法级别
 *       方法路径
 *     2. 设置在类级别
 *       类路径
 *     3. 设置类级别和方法级别
 *       类路径/方法路径
 *
 *
 *     1. 映射单个地址
 *       @RequestMapping("路径")
 *     2. 映射多个路径
 *       @RequestMapping(value = {"路径", "路径"})
 *     3. 设置类路径 + 方法路径
 *       可以通过@RequestMapping 设置类路径，如果有类路径，则访问时需要将类路径作为我们的类路径
 *       （方法路径前需要夹类路径）
 *       类上：@RequestMapping("路径")
 *       方法上：@RequestMapping("路径")
 *       访问：类路径/方法路径
 *     4. 设置请求地址的方式
 *       通过注解的method属性设置 (GET,POST,PUT,DELETE)，默认支持任何方式
 *       @RequestMapping(value = "路径", method = "请求方式")
 *       请求方式： RequestMethod.GET、RequestMethod.POST等
 *     5. 设置参数路径
 *       通过注解的params属性设置参数路径
 *       @RequestMapping(params = "参数名")
 *       访问时：类路径?参数名
 */
@Controller
@RequestMapping("/url")
public class UrlController {

    /**
     * 1. 映射单个地址
     *   可以设置路径的“/“，也可以不添加
     *   访问路径： http://localhost:8080/springmvc-01/u01
     * @return
     */
    @RequestMapping("/u01")
    public ModelAndView url01() {
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("msg", "url01");
        modelAndView.setViewName("hello");
        return modelAndView;
    }

    /**
     *   访问路径： http://localhost:8080/springmvc-01/u02
     * @return
     */
    @RequestMapping("u02")
    public ModelAndView url02() {
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("msg", "url02");
        modelAndView.setViewName("hello");
        return modelAndView;
    }

    /**
     * 2. 映射多个地址
     *   可以设置路径的“/“，也可以不添加
     *   @RequestMapping(value = {"路径", "路径"})
     *
     *   访问路径： http://localhost:8080/springmvc-01/u03_01
     *             http://localhost:8080/springmvc-01/u03_02
     * @return
     */
    @RequestMapping(value = {"/u03_01", "/u03_02"})
    public ModelAndView url03() {
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("msg", "url03");
        modelAndView.setViewName("hello");
        return modelAndView;
    }

    /**
     * 3. 设置类路径
     *   @RequestMapping("路径")
     *   访问路径： http://localhost:8080/springmvc-01/url/u04
     * @return
     */
    @RequestMapping("u04")
    public ModelAndView url04() {
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("msg", "url04");
        modelAndView.setViewName("hello");
        return modelAndView;
    }

    /**
     * 4. 设置地址的请求方式
     *   @RequestMapping(value = "路径", method = "请求方式")
     *   访问路径： http://localhost:8080/springmvc-01/url/u05
     * @return
     */
    @RequestMapping(value = "u05", method = RequestMethod.GET)
    public ModelAndView url05() {
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("msg", "url05");
        modelAndView.setViewName("hello");
        return modelAndView;
    }

    /**
     * 5. 设置参数路径
     *   @RequestMapping(params = "参数名")
     *   访问路径： http://localhost:8080/springmvc-01/url/u06
     * @return
     */
    @RequestMapping(params = "u06")
    public ModelAndView url06() {
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("msg", "url06");
        modelAndView.setViewName("hello");
        return modelAndView;
    }

}
